//
//  CZStatusViewModel.swift
//  iOSWeibo10
//
//  Created by ge on 16/5/15.
//  Copyright © 2016年 ge. All rights reserved.
//

import UIKit

/// 负责 CZStatus模型数据的加载(网络请求), 将字典转成模型数组
class CZStatusViewModel: NSObject {
    /// 单例
    static let sharedInstance: CZStatusViewModel = CZStatusViewModel()
    
    /// 私有构造函数
    private override init() {
        super.init()
    }
    
    /**
     加载微博数据
     */
    func loadStatus(loadStatusCallback: (statuses: [CZStatus]?,error:NSError?) -> ()){
        guard let access_token = CZUserAccountViewModel.sharedInstance.userAccount?.access_token else {
            CZPrint(items: "access_token没有值,不去请求微博数据")
            return
        }
        
        // 1.看API
        
        // 2.urlString
        let urlString = "2/statuses/home_timeline.json"
        
        // 3.参数
        let parameters = [
            "access_token" : access_token
        ]
        
        // 4.请求
        CZNetworkTool.sharedInstance.request(RequestMethod.GET, URLString: urlString, parameters: parameters, success: { (_, responseObject) -> Void in
            // 5.请求成功
//            CZPrint(items: "获取微博数据成功了: \(responseObject)")
            if let result = responseObject as? [String: AnyObject] {
                // 返回的数据是字典
                
                // 获取到所有的微博数据   [Int] [[String: AnyObject]]
                if let statuses = result["statuses"] as? [[String: AnyObject]] {
                    // 定义空数组数组存放转好的微博模型
                    var statusArray = [CZStatus]()
                    
                    // 遍历数组,取出每一个微博字典 [String: AnyObject]
                    for dict in statuses {
                        // 字典转模型
                        let statusModel = CZStatus(dict: dict)
                        
                        // 将模型添加到数组中
                        statusArray.append(statusModel)
                    }
//                    CZPrint(items: "微博模型数组: \(statusArray)")
                    // 将微博数据告诉homeViewController(调用的人)
                    loadStatusCallback(statuses: statusArray, error: nil)
                }
            }
            }) { (_, error) -> Void in
                // 6.请求失败
//                CZPrint(items: "获取微博数据失败了: \(error)")
                loadStatusCallback(statuses: nil, error: error)
        }
    }
    

}























